//
// Created by heguanyuan on 2016/10/27.
//
#include <stdio.h>

typedef unsigned char uchar;
typedef unsigned char *byte_pointer;

/**show_bytes*/
void show_bytes(byte_pointer start, int len, char array) {
    if (array) {
        if (len > 0)
            printf("0x");
        for (int j = 0; j < len; ++j) {
            printf(" %.2x", start[j]);
        }
    } else {
        if (len > 0)
            printf("0x");
        for (int j = len - 1; j >= 0; --j) {
            printf(" %.2x", start[j]);
        }
    }
    printf("\n");
}

void show_int(int x) {
    // 都是小端法：最低有效字节在最前，如 show_int(0x12345) ==> 45 23 01 00；45的地址最小，在最前;
    show_bytes((byte_pointer) &x, sizeof(x), 0);
}

void show_float(float f) {
    show_bytes((byte_pointer) &f, sizeof(f), 0);
}

void show_pointer(void *x) {
    // 表达式 &x 创建了一个指针，类型为 void**,是一种特殊类型的指针，没有相关联的类型信息
    show_bytes((byte_pointer) &x, sizeof(void *), 0);
}

int main() {
    printf("running:\n\n");
    show_int(-1);
    show_int(-2);
    show_int(-3);
    show_int(-4);
}